Non-volatile data storage devices, such as embedded flash memories, universal serial bus (USB) flash memory devices, or removable storage cards, have allowed for increased portability of data and software applications. Flash memory devices can enhance data storage density by storing multiple bits in each flash memory cell. For example, Multi-Level Cell (MLC) flash memory devices can provide increased storage density by storing 3 bits per cell, 4 bits per cell, or more.
Storing multiple bits of information in a single flash memory cell typically includes mapping sequences of bits to states of the flash memory cell. For example, a first sequence of bits “110” may correspond to a first state of a flash memory cell and a second sequence of bits “010” may correspond to a second state of the flash memory cell. After determining that a sequence of bits is to be stored into a particular flash memory cell, the particular flash memory cell may be programmed to a state (e.g., by setting a threshold voltage) that corresponds to the sequence of bits.
Once memory cells in a data storage device have been programmed, data may be read from the memory cells by sensing the programmed state of each memory cell by comparing the cell threshold voltage to one or more read voltages. However, the sensed programming states can sometimes vary from the written programmed states due to one or more factors, such as data retention and program disturb conditions.
In addition, increased bit error rate (BER) due to temperature changes between programming temperature (e.g., a temperature of a memory when data is written to the memory) and later reading temperature (e.g., a temperature of the memory when the data is read from the memory) is becoming an increasingly significant issue in recent memory generations. Because each storage element of a non-volatile data storage device may have a distinct cross temperature coefficient, each storage element may exhibit a different threshold voltage (Vt) shift due to a temperature change relative to the temperature at which the storage element was programmed and verified. The Vt shift per storage element is a function of the temperature difference. As a result, reading a page at a different temperature than the programming temperature of the page results in shifting and widening of the cell voltage distributions (CVDs) of the different states of the storage devices and in an increased BER. Shifting and widening of the CVDs and increased BER arises in both temperature change directions, such as when data is read from storage elements at a higher temperature than the data was written to the storage elements, and also when the data is read from storage elements at a lower temperature than the data was written to the storage elements.